package com.abewy.android.apps.klyph.core.fql.serializer; import java.util.ArrayList; import org.json.JSONObject; import com.abewy.android.apps.klyph.core.fql.Application; import com.abewy.android.apps.klyph.core.fql.Attachment; import com.abewy.android.apps.klyph.core.fql.Event; import com.abewy.android.apps.klyph.core.fql.LikeInfo; import com.abewy.android.apps.klyph.core.fql.Link; import com.abewy.android.apps.klyph.core.fql.Page; import com.abewy.android.apps.klyph.core.fql.Photo; import com.abewy.android.apps.klyph.core.fql.Privacy; import com.abewy.android.apps.klyph.core.fql.Status; import com.abewy.android.apps.klyph.core.fql.Stream; import com.abewy.android.apps.klyph.core.fql.Tag; import com.abewy.android.apps.klyph.core.fql.Video; import com.abewy.android.apps.klyph.core.fql.Stream.CommentInfo; import com.abewy.android.apps.klyph.core.graph.GraphObject; public class StreamDeserializer extends Deserializer { @Override public GraphObject deserializeObject(JSONObject data) { Stream stream = new Stream(); deserializePrimitives(stream, data); stream.setAttachment((Attachment) new AttachmentDeserializer().deserializeObject(getJsonObject(data, "attachment"))); stream.setLike_info((LikeInfo) new LikesDeserializer().deserializeObject(getJsonObject(data, "like_info"))); stream.setPrivacy((Privacy) new PrivacyDeserializer().deserializeObject(getJsonObject(data, "privacy"))); stream.setComment_info((CommentInfo) new CommentsDeserializer().deserializeObject(getJsonObject(data, "comment_info"))); stream.setLiked_pages(new PageDeserializer().deserializeArray(getJsonArray(data, "liked_pages"), Page.class)); stream.setEvent((Event) new EventDeserializer().deserializeObject(getJsonObject(data, "event"))); stream.setLink((Link) new LinkDeserializer().deserializeObject(getJsonObject(data, "link"))); stream.setPhoto((Photo) new PhotoDeserializer().deserializeObject(getJsonObject(data, "photo"))); stream.setVideo((Video) new VideoDeserializer().deserializeObject(getJsonObject(data, "video"))); stream.setStatus((Status) new StatusDeserializer().deserializeObject(getJsonObject(data, "status"))); stream.setApplication((Application) new ApplicationDeserializer().deserializeObject(getJsonObject(data, "application"))); if (data.optJSONObject("parent_stream") != null) stream.setParent_stream((Stream) new StreamDeserializer().deserializeObject(getJsonObject(data, "parent_stream"))); if (data.optJSONArray("message_tags") != null) stream.setMessage_tags(new TagDeserializer().deserializeMap(getJsonArray(data, "message_tags"))); else stream.setMessage_tags(new TagDeserializer().deserializeMap(getJsonObject(data, "message_tags"))); if (data.optJSONArray("description_tags") != null) stream.setDescription_tags(new TagDeserializer().deserializeMap(getJsonArray(data, "description_tags"))); else stream.setDescription_tags(new TagDeserializer().deserializeMap(getJsonObject(data, "description_tags"))); if (data.optJSONArray("tagged_tags") != null) { stream.setTagged_tags(new TagDeserializer().deserializeArray(getJsonArray(data, "tagged_tags"), Tag.class)); } else stream.setTagged_tags(new ArrayList<Tag>()); return stream; } public static class CommentsDeserializer extends Deserializer { @Override public GraphObject deserializeObject(JSONObject data) { CommentInfo comments = new CommentInfo(); deserializePrimitives(comments, data); return comments; } } }